package org.springframework.core.convert;

/**
 * @Name ConversionService
 * @Description: 类型转换 [服务] 接口
 * 描述信息：ConversionService 是类型转换体系的核心接口，将以上三种（基础、工厂、通用）类型转换器整合到了一起。
 * 实现类：
 * - GenericConversionService：通用类型转换服务 [实现] 类
 * - DefaultConversionService：在 GenericConversionService 的基础上添加了内置转换器。
 * @Version v1.0.0
 * @Author: lichao
 * @Date: 2024-04-11 15:14:01
 **/
public interface ConversionService {

    /**
     * 判断是否可以进行类型转转换
     *
     * @param sourceType 源类型
     * @param targetType 目标类型
     * @return boolean 判断结果
     * @version v1.0.0
     * @author lichao
     * @date 2024-04-11 15:15:01
     */
    boolean canConvert(Class<?> sourceType, Class<?> targetType);

    /**
     * 如果可以进行类型转换，将源类型的对象转换成目标类型的对象
     *
     * @param source     源类型对象
     * @param targetType 目标类型
     * @return T 目标类型的对象
     * @version v1.0.0
     * @author lichao
     * @date 2024-04-11 15:15:31
     */
    <T> T convert(Object source, Class<T> targetType);

}
